/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mundialfp.view.encuentro;

import java.util.logging.Level;
import java.util.logging.Logger;
import mundialfp.view.main.*;
import mundialfp.view.tables.TableCustom2;
import mundialfp.view.tables.paisPuntos.TablePuntosManager;
import mundialfp.view.ws.EncuentroWSService;
import uy.com.pzit.fpmundialmodel.web.ws.Encuentro;
import uy.com.pzit.fpmundialmodel.web.ws.EncuentroResponse;

/**
 *
 * @author pferraz
 */
public class EncuentroManager {

    private final RegistrarEncuentro main;
    private final TablePuntosManager tPuntosManager;
    private final TableCustom2 table;
    private final PrincipalManager pManager;

    public EncuentroManager(RegistrarEncuentro main, TableCustom2 table, PrincipalManager pManager) {
        this.main = main;
        this.pManager = pManager;
        this.table = table;
        this.tPuntosManager = new TablePuntosManager();
    }

    public void cargando(boolean cargando) {
        main.getLblBallLoad().setVisible(cargando);
        main.getLblLoad().setVisible(cargando);
    }

    public void registrarEncuentro() {
        cargando(true);
        main.enableComponents(main.getPnlRegistrarEncuentro(), false);
        new NonBlockingOperationPrincipalManager("registrarEncuentro").start();
    }

    private class NonBlockingOperationPrincipalManager extends Thread {

        private final String methodName;

        public NonBlockingOperationPrincipalManager(String methodName) {
            this.methodName = methodName;
        }

        @Override
        public void run() {
            try {
                if (this.methodName.equalsIgnoreCase("registrarEncuentro")) {
                    registrarEncuentro();
                }
                this.interrupt();
            } catch (Throwable ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        private void registrarEncuentro() {
            Encuentro encuentro = new Encuentro();
            encuentro.setFase(main.getFase());
            encuentro.setPais1(main.getNombrePaisMap().get(main.getLblNombrePais1().getText()));
            encuentro.setGolesP1(Integer.parseInt(main.getTxtGolesPais1().getText()));
            encuentro.setPais2(main.getNombrePaisMap().get(main.getLblNombrePais2().getText()));
            encuentro.setGolesP2(Integer.parseInt(main.getTxtGolesPais2().getText()));
            encuentro.setPenales(main.getChkPenales().isSelected());
            EncuentroResponse resp = EncuentroWSService.registrarEncuentro(encuentro, main.getCompetencia().getId());
            main.getCompetencia().getPaises().clear();
            main.getCompetencia().getPaises().addAll(resp.getPaisesEnCompeticion());
            if (resp.getCompetenciaCompletada() != null) {
                pManager.getElim().setFechaFin(resp.getCompetenciaCompletada());
                pManager.refreshButtonVisibility();
            }
            main.getEncuentros().add(resp.getEncuentro());
            tPuntosManager.initTablePuntos(table, main.getCompetencia().getPaises(), main.getCompetencia().getCupos());
            cargando(false);
            main.setVisible(false);
        }

    }
}
